//******************************************************//
//														//
//					LineaPrepaga.java					//
//														//
//******************************************************//

package Misc;

import java.util.ArrayList;
import java.util.Scanner;

import Actores.Cliente;

public class LineaPrepaga extends Linea {
    private static Float valorMinuto;
    private static Float valorMensaje;   
    private Float carga; // ES EL SALDO QUE TIENE LA TARJETA
    ArrayList<Tarjeta> listaTarjetas;

    // Constructor ===================================

    public LineaPrepaga(Integer id, Cliente cli, Integer num, Float car) {
        super(id, cli, num);

        carga = car; 

        listaTarjetas = new ArrayList<Tarjeta>();
    }

    // Setters ========================================    

    public static void setValorMensaje(Float v) {
        valorMensaje = v;
    }
    
    public static void setValorMinuto(Float v) {
        valorMinuto = v;
    }
    
    // Getters ======================================== 

    public Float getCarga() {
    	return carga;
    }

    
    public Integer getMinutosDisponibles() {
    	return (int)(carga / LineaPrepaga.getValorMinuto());
    }
    
    public Integer getMensajesDisponibles() {
    	return (int)(carga / LineaPrepaga.getValorMensaje());
    }
    
    
    public static Float getValorMensaje() {
        if( valorMensaje == null) {
            Scanner entrada = new Scanner (System.in);

            System.out.println("Ingrese valor del mensaje: $");
            Float v = entrada.nextFloat();
            
            setValorMensaje(v);
        }    	
    	return valorMensaje;
    }
    
    
    public static Float getValorMinuto() {
        if( valorMinuto == null) {
            Scanner entrada = new Scanner (System.in);

            System.out.println("Ingrese valor del minuto: $");
            Float v = entrada.nextFloat();
            
            setValorMinuto(v);
        }    	
    	return valorMinuto;
    }
    
    
    
    // Otras funciones ================================ 
    @Override
    public void cargarTarjeta(Tarjeta t) {
        if (!listaTarjetas.contains(t)) {
            carga += t.getValor();            
            listaTarjetas.add(t);
            System.out.println("Tarjeta cargada correctamente.");
        } else {
            System.out.println("Error: ya ha cargado la tarjeta.");
        }
    }

    @Override
    public String toString() {
        return super.toString() +
                "\nTipo: Prepaga" +
                "\nMinutos disponibles: " + this.getMinutosDisponibles() +
                "\nMensajes disponibles: " + this.getMensajesDisponibles();
    }

    @Override
    public void mostrarSaldo() {
    	System.out.println("El saldo actual es de: $ " + getCarga());     	
    }
    
    //DESCONTAR DE LAS TARJETAS EL CREDITO
    public void consumirMensajes(int cant){
    	if (carga >= LineaPrepaga.getValorMensaje()*cant) {
    		carga -= LineaPrepaga.getValorMensaje()*cant;
    		System.out.println("Se han consumido: "+ cant + "mensajes.");
    		System.out.println("Le restan: "+ this.getMensajesDisponibles() + "mensajes.");    		
    	}	
    	else
    		System.out.println("Error: no alcanza el credito.");
    }
    
    public void consumirMinutos(int cant){
    	if (carga >= LineaPrepaga.getValorMinuto()*cant) {
    		carga -= LineaPrepaga.getValorMinuto()*cant;
    		System.out.println("Se han consumido: "+ cant + "minutos.");
    		System.out.println("Le restan: "+ this.getMinutosDisponibles() + "minutos.");    		
    	}	
    	else
    		System.out.println("Error: no alcanza el credito.");
    }
}